# Maintainer: Felix Yan <felixonmars@archlinux.org>
# Contributor: Andrea Scarpino <andrea@archlinux.org>

# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
#  - patch for chromium GN
#  - patch for chromium skia
#  - patch for chromium to run blink bindings generation single threaded

buildarch=12
highmem=1

pkgname=qt5-webengine
_qtver=5.15.3
pkgver=${_qtver/-/}
pkgrel=5
_commit=a059e7404a6db799f4da0ad696e65ae9c854b4b0
# Upstream won't tag releases, because potatoes https://lists.qt-project.org/pipermail/interest/2021-March/036386.html
arch=('x86_64')
url='https://www.qt.io'
license=('LGPL3' 'LGPL2.1' 'BSD')
pkgdesc='Provides support for web applications using the Chromium browser project'
depends=('qt5-webchannel' 'qt5-location' 'libxcomposite' 'libxrandr' 'pciutils' 'libxss' 
         'libevent' 'snappy' 'nss' 'libxslt' 'minizip' 'ffmpeg' 're2' 'libvpx' 'libxtst' 'ttf-font')
makedepends=('git' 'python2' 'python' 'gperf' 'jsoncpp' 'ninja' 'qt5-tools' 'poppler' 'libpipewire02' 'nodejs')
optdepends=('libpipewire02: WebRTC desktop sharing under Wayland')
groups=('qt' 'qt5')
_pkgfqn=qtwebengine
source=(git+https://code.qt.io/qt/qtwebengine.git#commit=$_commit
        git+https://code.qt.io/qt/qtwebengine-chromium.git
        v8-call-new-ListFormatter-createInstance.patch
        qt5-webengine-glibc-2.33.patch
        qtbug-91773.patch
        0001-ARM-toolchain-fixes.patch
        0002-Fix-ARM-skia-ICE.patch
        0003-bind-gen-Support-single_process-flag-in-generate_bin.patch
        0004-Run-blink-bindings-generation-single-threaded.patch
        0005-Fix-sandbox-Aw-snap-for-sycalls-403-and-407.patch)
sha256sums=('SKIP'
            'SKIP'
            '44ebcff050a1c849819d66399c14bd711801d0eb64f518d292d3d6efedce3b3a'
            '2294e5390c869963fc58f7bf1ee0a254a3f7fce3ed00c04e34a5f03e2b31b624'
            '02009c7f87a216131ab96418c9ddb21e697e61668a970b972242f0015b36ba4c'
            '10b3fed2d67b3a1f487d2d95c9a603fcbc23f08d4528d1986a6d0010c9e466bc'
            '48f37525c7066b0119b10981ae59139189ca3423db6bd14da6e064065d5d3016'
            'e77263fd4c7d40972ce61ce353438ee1e0a4d0771c9014aeded001c6a2301d17'
            '77c669db765b15d309eea058dc5984e8f100956fa83479a4edb7d0a06f775ac3'
            'afaeece4be0a18777e440d11639cb47952772135fa5533b7aef5221bde8db533')

prepare() {
  mkdir -p build

  cd ${_pkgfqn}
  git submodule init
  git submodule set-url src/3rdparty "$srcdir"/qtwebengine-chromium
  git submodule set-branch --branch 87-based src/3rdparty
  git submodule update

  git cherry-pick -n 199ea00a9eea13315a652c62778738629185b059 # Fix crashes with some locales
  patch -p1 < "$srcdir"/qtbug-91773.patch # Fix load signals 4d4fc9cd120376f30ce0630b1e8c7bf174d44fae
  patch -p1 -d src/3rdparty/chromium/v8 -i "$srcdir"/v8-call-new-ListFormatter-createInstance.patch # Fix build with ICU 69
  patch -p1 -i "$srcdir"/qt5-webengine-glibc-2.33.patch # Fix text rendering when building with glibc 2.33

  cd "$srcdir/$_pkgfqn/src/3rdparty"
  patch -p1 -i ${srcdir}/0001-ARM-toolchain-fixes.patch
  patch -p1 -i ${srcdir}/0002-Fix-ARM-skia-ICE.patch
  patch -p1 -i ${srcdir}/0003-bind-gen-Support-single_process-flag-in-generate_bin.patch
  patch -p1 -i ${srcdir}/0004-Run-blink-bindings-generation-single-threaded.patch
  patch -p1 -i ${srcdir}/0005-Fix-sandbox-Aw-snap-for-sycalls-403-and-407.patch
}

build() {
  cd build
  qmake ../${_pkgfqn} -- \
    -proprietary-codecs \
    -system-ffmpeg \
    -webp \
    -spellchecker \
    -webengine-icu \
    -webengine-kerberos \
    -webengine-webrtc-pipewire
  make
}

package() {
  cd build
  make INSTALL_ROOT="$pkgdir" install

  # Drop QMAKE_PRL_BUILD_DIR because reference the build dir
  find "$pkgdir/usr/lib" -type f -name '*.prl' \
    -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;

  install -Dm644 "$srcdir"/${_pkgfqn}/src/3rdparty/chromium/LICENSE "$pkgdir"/usr/share/licenses/${pkgname}/LICENSE.chromium

  # Fix cmake dependency versions
  sed -e "s|$pkgver\ |5.15.2 |" -i "$pkgdir"/usr/lib/cmake/*/*Config.cmake
}
